package com.reggie.common;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.experimental.Accessors;

import java.io.Serializable;

/**
 * @Author 早睡蛋
 * @Date 2022/7/25 09:59:10
 * @Desc:
 * 统一结果返回
 */
@Data
@AllArgsConstructor
@Accessors(chain = true)
public class ResultResponseVo implements Serializable {
    /**
     * 状态码
     */
    private int code;

    /**
     * 信息
     */
    private String message;

    /**
     * 数据
     */
    private Object data;

    private ResultResponseVo(){}

    /**
     * 默认success返回（无返回信息）
     * @return
     */
    public static ResultResponseVo defaultSuccessResultResponse(){
        ResultResponseVo resultResponseVo = new ResultResponseVo();
        resultResponseVo.setCode(200);
        resultResponseVo.setMessage("OK");
        return resultResponseVo;
    }

    /**
     * 默认success返回（有返回信息）
     * @param data
     * @return
     */
    public static ResultResponseVo defaultSuccessResultResponse(Object data){
        ResultResponseVo resultResponseVo = new ResultResponseVo();
        resultResponseVo.setCode(200);
        resultResponseVo.setMessage("OK");
        resultResponseVo.setData(data);
        return resultResponseVo;
    }

    /**
     * 默认fail返回（无返回信息）
     * @return
     */
    public static ResultResponseVo defaultFailResultResponse(){
        ResultResponseVo resultResponseVo = new ResultResponseVo();
        resultResponseVo.setCode(400);
        resultResponseVo.setMessage("fail");
        return resultResponseVo;
    }

    /**
     * 默认fail返回（返回信息）
     * @return
     */
    public static ResultResponseVo defaultFailResultResponse(Object data){
        ResultResponseVo resultResponseVo = new ResultResponseVo();
        resultResponseVo.setMessage("fail");
        resultResponseVo.setData(data);
        return resultResponseVo;
    }

    /**
     * 默认返回
     * @return
     */
    public static ResultResponseVo defaultResultResponse(){
        ResultResponseVo resultResponseVo = new ResultResponseVo();
        return resultResponseVo;
    }

}
